package com.fclassroom;

import com.fclassroom.ErrorCode.ModelType;

/*
                   _ooOoo_
                  o8888888o
                  88" . "88
                  (| -_- |)
                  O\  =  /O
               ____/`---'\____
             .'  \\|     |//  `.
            /  \\|||  :  |||//  \
           /  _||||| -:- |||||-  \
           |   | \\\  -  /// |   |
           | \_|  ''\---/''  |   |
           \  .-\__  `-`  ___/-. /
         ___`. .'  /--.--\  `. . __
      ."" '<  `.___\_<|>_/___.'  >'"".
     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
     \  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======
                   `=---='
             佛祖保佑       永无BUG
	佛曰:  
		写字楼里写字间，写字间里程序员；  
		程序人员写程序，又拿程序换酒钱。  
		酒醒只在网上坐，酒醉还来网下眠；  
		酒醉酒醒日复日，网上网下年复年。  
		但愿老死电脑间，不愿鞠躬老板前；  
		奔驰宝马贵者趣，公交自行程序员。  
		别人笑我忒疯癫，我笑自己命太贱；  
		不见满街漂亮妹，哪个归得程序员？
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
	@author jason
    @date   2015年12月25日 上午11:07:19
	Copyright (c) 2015,  email:14902300@qq.com All Rights Reserved. 
 * 系统错误码
 * 规则：
 * 		1开头的，表示通用错误；
 *		2开头的，表示帐号类错误；
 *		3开头的，表示组织机构信息错误，如学校，年级，班级，学科等；
 *		4开头的，表示试卷信息错误，如试卷，试题，知识点等；
 *		5开头的，表示统计类错误；
 *		6开头的，表示学生数据类错题，如错因信息，留言等
 *		
 *		9开头的，表示第三方对接错误
 *
 */
public class ErrorCode {
	public final static String System_Busy = "-1"; // 系统繁忙，一般发生在队列请求中，或远程服务器无响应
	public final static String Success = "0"; // 操作成功
	public final static String System_api_unsuport = "9"; // 该接口暂停使用。
	// 系统 以10开头
	public final static String System_error = "10001"; // 系统错误，代码级别的运行错误。
	public final static String System_unavailable = "10002"; // 远程服务器返回错误码如：404，500，400等
	public final static String IP_limit = "10004"; // 请求IP被限制。
	public final static String Api_noexist = "10005"; // 请求接口不存在。
	public final static String Parameter_required = "10006";// 缺少请求参数
	public final static String Parameter_error = "10007"; // 请求参数不合法
	public final static String File_error = "10008"; // 操作文件错误
	public final static String APP_update_nonew = "10009"; // 未发现更新文件
	public final static String APP_update_hasnew = "10010"; // 发现更新文件
	// 帐号 以20开头
	public final static String ACCESS_TOKEN_From_null = "20000"; // 未提交from
	public final static String ACCESS_TOKEN_null = "20001"; // 未提交token
	public final static String ACCESS_TOKEN_expire = "20002"; // token过期
	public final static String Account_NAME_OR_PASSWORD_wrong = "20003"; // 帐号密码错误
	public final static String Account_disable = "20004"; // 帐号被禁用。
	public final static String Account_oldpwd_wrong = "20005"; // 旧密码错误
	public final static String Account_info_wrong = "20006"; // 用户信息有误
	public final static String OPENID_null = "20007"; // 未提交openId
	public final static String Checkcode_wrong_or_timeouts = "20008"; // 验证码错误或超时
	public final static String Update_Pwd_error = "20009"; // 更新密码错误
	public final static String NICKNAME_EXISTS = "20010"; // 昵称已存在
	public final static String PHONE_NOT_BIND = "20011"; // 手机没有绑定过极课号
	public final static String PHONE_ALREADY_BIND = "20012"; // 手机已经被绑定过
	public final static String QQ_ALREADY_BIND = "20014"; // QQ已经被绑定过
	public final static String QQ_NOT_BIND = "20024"; // QQ没有绑定过极课号
	public final static String Parent_info_not_exist = "20013"; // 没有找到家长info信息
	public final static String Teacher_info_not_exist = "20015"; // 没有找到教师info信息
	public final static String Student_info_not_exist = "20016"; // 没有找到学生info信息
	public final static String Account_jikenum_not_exist = "20017"; // 极课号不存在
	public final static String Jikenum_ALREADY_BIND = "20018"; // 该极课号已被绑定过，请直接登录
	public final static String Account_limit = "20019"; // 帐号登录受限

	// 组织机构
	public final static String School_info_not_exist = "30001"; // 学校信息不存在
	public final static String School_info_duplicate = "30002"; // 重复学校信息
	public final static String Grade_info_duplicate = "30003"; // 重复年级信息
	public final static String Subject_info_duplicate = "30004"; // 重复学科信息
	public final static String Grade_Subject_not_exist = "30005"; // 年级或学科信息为空，可能还未导入学校初始数据
	// 试卷操作 以40开头
	public final static String Exam_WRONG_SCORE = "40001";// 修改的分值不能大于题目分值
	public final static String ExamRoom_save_error = "40002";// ExamRoom保存失败
	// 学生数据类错题
	public final static String NoteBook_info_duplicate = "60002"; // 重复错题本名字
	public final static String NoteBookQuestion_info_duplicate = "60003"; // 重复错题
	public final static String Craftexam_org_duplicate = "60004"; // 重复试练
	public final static String ReviseTask_info_duplicate = "60005"; // 重复订正任务
	public final static String TagNum_over_limit = "60006"; // 错题标签数已满，不能再添加
	public final static String Tag_exist = "60007";// 错因标签已存在

	// TODO 要修改。
	public final static String QQ_token_null = "50001"; // 绑定返回参数为空

	public final static String MAX_LIMIT = "20121";// 超出最大范围
	public final static String Save_fail = "20113"; // 保存失败
	public final static String Update_fail = "20114"; // 更新失敗
	public final static String Delete_fail = "20115";// 删除失败
	public final static String DUPLICATE = "20116"; // 数据重复
	public final static String Download_fail = "20120"; // 下載失敗
	public final static String NOTEBOOK_EXISTS = "20122"; // 错题本已存在
	public final static String NOTEBOOK_NAME_DUPLICATE = "20123"; // 错题本名称重复
	public final static String Send_fail = "20124"; // 发送失败
	public final static String Operate_fail = "20125"; // 操作失败

	// 预留
	public final static String Reserve = "99999";

	/**
	 * 埋点日志枚举
	 * 
	 * @author zb
	 * @Time 2017年5月22日 下午6:02:21
	 */
	public enum ModelType {
		// 11教师客户端；12教师安卓；13教师iOS；14和16教师web；15报表中心；
		// 21学生安卓；22学生iOS；23学生web；
		// 31家长微信
		REPORT_WEB("log_report", "log_report_web", 15), TEACHER_APP("log_teacher", "log_teacher_app", 12), TEACHER_PC(
				"log_teacher", "log_teacher_pc", 11), TEACHER_WEB2("log_teacher", "log_teacher_web",
						16), TEACHER_WEB("log_teacher", "log_teacher_web", 14), FAMILY_WX("log_family_parent",
								"log_family_parent_wx", 31), STUDENT_APP("log_family_student", "log_family_student_app",
										21), STUDENT_WEB("log_family_student", "log_family_student_web", 23);
		// 成员变量
		private String logstore;
		private String topic;
		private Integer num;

		private ModelType(String logstore, String topic, Integer num) {
			this.logstore = logstore;
			this.topic = topic;
			this.num = num;
		}

		public static String getLogstoreValue(Integer num) {
			for (ModelType model : ModelType.values()) {
				if (model.getNum() == num) {
					return model.getLogstore();
				}
			}
			return null;
		}

		public static String getTopicValue(Integer num) {
			for (ModelType model : ModelType.values()) {
				if (model.getNum() == num) {
					return model.getTopic();
				}
			}
			return null;
		}

		/**
		 * @return the logstore
		 */
		public String getLogstore() {
			return logstore;
		}

		/**
		 * @param logstore
		 *            the logstore to set
		 */
		public void setLogstore(String logstore) {
			this.logstore = logstore;
		}

		/**
		 * @return the topic
		 */
		public String getTopic() {
			return topic;
		}

		/**
		 * @param topic
		 *            the topic to set
		 */
		public void setTopic(String topic) {
			this.topic = topic;
		}

		/**
		 * @return the num
		 */
		public Integer getNum() {
			return num;
		}

		/**
		 * @param num
		 *            the num to set
		 */
		public void setNum(Integer num) {
			this.num = num;
		}

	}

	/**
	 * 系统日志枚举
	 * 
	 * @author zb
	 * @Time 2017年5月22日 下午6:01:50
	 */
	public enum SystemModelType {
		// 11教师客户端；12教师安卓；13教师iOS；14和16教师web；
		// 21学生安卓；22学生iOS；23学生web；
		// 31家长微信
		TEACHER_APP("log_teacher", "log_teacher_and", 12), TEACHER_PC("log_teacher", "log_teacher_cs",
				11), TEACHER_WEB2("log_teacher", "log_teacher_web", 16), TEACHER_WEB("log_teacher", "log_teacher_web",
						14), FAMILY_WX("log_family_parent", "log_family_parent_wx", 31), STUDENT_APP(
								"log_family_student", "log_family_student_and",
								21), STUDENT_WEB("log_family_student", "log_family_student_web", 23);
		// 成员变量
		private String logstore;
		private String topic;
		private Integer num;

		private SystemModelType(String logstore, String topic, Integer num) {
			this.logstore = logstore;
			this.topic = topic;
			this.num = num;
		}

		public static String getLogstoreValue(Integer num) {
			for (SystemModelType model : SystemModelType.values()) {
				if (model.getNum() == num) {
					return model.getLogstore();
				}
			}
			return null;
		}

		public static String getTopicValue(Integer num) {
			for (SystemModelType model : SystemModelType.values()) {
				if (model.getNum() == num) {
					return model.getTopic();
				}
			}
			return null;
		}

		/**
		 * @return the logstore
		 */
		public String getLogstore() {
			return logstore;
		}

		/**
		 * @param logstore
		 *            the logstore to set
		 */
		public void setLogstore(String logstore) {
			this.logstore = logstore;
		}

		/**
		 * @return the topic
		 */
		public String getTopic() {
			return topic;
		}

		/**
		 * @param topic
		 *            the topic to set
		 */
		public void setTopic(String topic) {
			this.topic = topic;
		}

		/**
		 * @return the num
		 */
		public Integer getNum() {
			return num;
		}

		/**
		 * @param num
		 *            the num to set
		 */
		public void setNum(Integer num) {
			this.num = num;
		}

	}

	public static void main(String aa[]) {
		System.out.println(SystemModelType.getLogstoreValue(21));
	}
}